ML }  X c0C)HCCH Mhhݩh `eCDiCD`  RyHP   * 1H0芢@) Y0.Ș`i#(PMR\ \b Pgi 0  % @ / ՠ`d   0DDԝLȀ}N@  )?HI Y0`HIJH) * J j * hJJJ )HJ h i     } YS S0 i`΢ϣ߳H J3xj2h} 1 |9 ӭ45(420 * (0241өX.`  R *i)Lvw  ~*P}E 5 LN(G E  r s k rsrL ( E LO(0d( L iE0O +)$IC  H S8 }q p h   j 8no CDLQ CFl M  LO Ri)Llk2'")*F }$F$F$F$F$ 5 )ШF/Șl]kpqС,LQ/A! Ti)Zlk@ ܬ/i)(")")k }$F$F$F 5$/L /lF@jj(LNkle$$%8(k()` R 8 ELO Ri)^>jf | NrC s } ) vw5g   enfo Glvw LQ@iLm>j FL ~Jjjjii p qEh }jlrs`LQ:$ȱ$@+[_#{ 8  Խut! ai 8   E I   ] C } H h    ˰ 8  N   Lm E  ,  [ `LQ ,/ 8 ~/  Ơ? ѩ}/  [ /Lj0?MoLn FjMqLp NklLOLQnLoMlNLO R"(+}ըHH`Q R!!  % !   / .   FȑF! /GF \H"+0+* }! F tLQnm: J~nTF1F  *n+)5! n (, n)1JJJn(n*o} I ,0  ci a oF? @ , 8,0 ʩ0H Eh   i}  D ]DmmFLQvtu`*&!*@h ] 0 ^0` c 0l$$%}()()%*&J%H,@hH hH@,h $% 8i8$(%)0hhH ]h`() c 0H c 0 h}`hhh&JJ ](ll  LQ0  /qnoHH 9 9 H H  I9  9 } Nd EH  Q8 o n  FnoL HII/ Ih8`h`Lnon`no`u F }E VEhLO/luF l0BF/lɜɛ׽hE N  b VFL FREE SECTORS C} H) *Fh ):FȽ F FC IH' 0 d  i:Fȩ/F.l`CD/08HDIC}IHȰ/F`ȱ$>.+.i ȱ$:刄H !A \ Hȱ$*?ȝ 2. ? [_{ ,0}-:) 0$:>WI  IТ,LQH  0hLd ~ t u`C ?( 0(C.` E } R =! .ti S0N EE D XC )0')AY  )ע ? 0E088FG \o}n  (HhLcL3 iJ i Lqp 0=rspnqopqlk`jZj0  j FL`H}FhȑFȽlFi0 h FFLFpvqwgneofLF pq7  G0i 0 FJJh1FqȱFpȱFk`B!}08`hEE D 8. =D}tui( TʩL`b!)    cȌaȌd b`aab}H8 hdaHcd8 cH hHH  \h hc` =Hh I8ih( t  ( t(!` L\}CJfCJfCJfCDfC` a  HII  INdh  `h  `n)8jHniPoijIjFIjFIjh` a } I 38  8H0 I  ' H LQ8j Y  8j NdY  &I &I &IHeH.p!}Iiq  `!.莿 2Jjj }.m Ȉ!m FG` ɩLQ z "} e Hi04 \ Ȍ  8 i h !`I0 `C Y8.`DOS SYS#} I  ` ~ݩ.C/`ba.m۩mѤC9 `C L] H  ,- '0 l $}, BLVDE`D1:AUTORUN.SYS8hhJ ȱHȱIȱBȱDȱEeeHHLV)  %}1*  ,,p-  0 I &  '0   Lw)l, 0  I&LD1:MEM.SAV&}E:D1:DUP.SYSTILITISE:D1:DUP.SYSTILITISE:D1:DUP.}J)1CD2:DOS.SYS n  * \*`آ R'S )ɀ@  U))% BError lo(}ading MEM.SAV or memory!  0* b*c*d*e* R Hd*JSDd*J-=e* 0c*ʈд =}MYDOS 4)}.50 -- Copyright 1988,˛Disks 1D- 2S- 3S- 6S- D: = D1: ~= =1-8.Dir of D1:-D8: *. Dir of D:A. *}Disk Directory K. Save MemoryB. Run Cartridge L. Load MemoryC. Copy File(s) M. Run at AddressD. Delete File(s) N. L+}oad MEM.SAVE. Rename File(s) O. Change Config.F. Lock File(s) P. Set DensityG. Unlock File(s) Q. Make DirectoryH. Wr,}ite DOS Files R. Pick DirectoryI. Initialize Disk S. Set RAMdisk #J. Duplicate Disk V. Set Verify Flag  ?莼-}( 0  =Select Item ( for menu):@  =ɛL)1L,*L,:W@ ,,L=No such item!.}L*, -L*, BNeed new file name! BNo drive or director0}ies allowed in new name!Lock Unlock Delete Lock which file?â-#Unlock which file?ɢ-$((H @ AQ/wDel1}ete what file?Ѣ-!((H @ ANJ =Answer 'Y' or 'N'h `B L?;(( ~=( ~= =? =Y ?Lj.H @ AhR ?2}R)L*,LM/L-Lz-File to rename, new name? @ A(9', ȱ:>0{ ПFull directory name?Z"L.Dire3}ctory to be used as 'D:'? @ A(5)L.(I: ȱޝL*, BInvalid directory!L?( 4}(0Li-File source, destination? '( @C۩2ڭ82ܭC B9'0 @(ߍeލd(DЍ( ? 9'5} A rBȱޙ':>Ȍ(C0J* .B :'ȱ/.* #,ɛȝ:' ߰ A L?,(0L*, '6}ut(:'3?&' .'Ƚ:'?&'  .ى'Q?''(#( ~= =-->' ~=7}Q =YR_o (J(  0?B݌''BK)`''utz0( >(L0L*,L?nDisk to FORMAT:8} YA B(UTލ1 =(Press for Enhanced Dns)Type to Format Drive 2: =AIYZNj[R VL9}?L*,D2:DUP.SYSDrive to write DOS files to? YAH1:*K)2J) Z wB hpJ) 2<2U:}TC٩1ة۩کL;Source, Destination (Sectors)? YA)((9'( SA)((((( @(0% =Inser;}t both disks, type = A( A((/( B(( BDrives not compatible!J(j(9'Hi''<}h(ɛy BInvalid options! @-&& @)׍&&(&&&۩ک&&&&8* <4&&&& <4=}8*8(ܭ(ݥ2C, BNot enough memory! ک&&`(Mh  & =L?&i &>}&&&mm   =  &((&թԥԍ(Ս(((( ( ((C2((?}ՠԍ((,(0"( (( =m(m( & &("L*,  ( AL4,(, =Insert DES@}TINATION disk, press =Nͼ J) b( 0K) ?((ԭ(խ( ( (((L4Drive, new density:A} YA9'ɛ BDrive unchanged.(ު90٨Ȍ(SD  ABL)xԌҭHӭ@ @ ʎӆ@B}ӭ@@ :  $ӹ @hөԥX` Aˠ =RAM disk present? =NL#8 =xlC}on or E type RAMdisk? =Aό  L   M A, A6: ' =No extra memory available!L#8L7 & & D}& =Use default config for 0)ȩ ~= =K? =NL7 =Size(K)? ? @FjFjFjFj: =Page seqE}uence? ? @o* =RAM disk drive no? = 09) `8 -8**H***) 9 Ȋ)h9 @@ʊ F}H'h(#''/'(ɛ ? @(@: 3 ʽ' L7 =Duplicated sequence number!L7 =Wrong numbG}er of entries!L7K큅쀄 =Verify WRITEs? ; =NumberH} of File Buffers? ? @  6 Lw),R( ';L*,Drive number or : =ɛLC99L60Ȍ( =Remove I}drive? =Y =Is drive configurable? =YЂ =High capacity drive? =Yy =Is drive double sided? =Y ; =TracksJ}/side? ? @#0M P( ; =Step rate? =4/ ; ';L*, =Drive size (in sectors)? ? @H(K}h *;L*,RAM disk drive no? 8L*,Verify WRITEs? ;L*, =WNPy`(`(  LABSAVE:filename,start,end(,init(L},run)) @TUH @Cp` 2< @؆8օڊ BInvalid START-END range!۩ @  @M} hԄՠAμȌZ wB04*  0$ڍXۍY֍T׍U,0LBLB #CL?ֆ׌`Load MEM.SAV from whaN}t file? 0#L*,L?Load from what file?) @TU&̩Z wB &0&-&а&𨭼INIZ'O}RV0II BNO CARTRIDGE!Ԇխ  )L?Run from what address? ?ɛ @P} BAddress must be 1-4 hex digits! BHILV n=`hh =HH` =0{a Hɛ n= n=h` nQ}=L*, = = pHH =hh`K: p `(((( i ɀ((L?(`(B'(0!HH''^R}>I^>(`^>DH(`(HI`(o5 ~= =( B( >@A (J wB0x((HHIIDDES}E B ?(CɈK(٢A ~= =( BL>(B^>((ڤ ܝHݝI VL_>L?(" B !B J) T} B(L& R XY( ?&:0H&((& ( .( & ( .(ʩ(U}`ލD&ߍEBIʎH( V0`ԩ ؠ@ȱ@ȱ)@ BError -- 163&`$8f 3AԄձG/ V}$<68i/(Ԧ`H&եԦ&&eԅheԅԊe(iL*@&&&&ԅL*@B ? 3A?*(ɛ:W}./2SX(0ȱ/.ɛ(ލ9'ި0#:Ȱ :ފ :ȱ: : CAD CAޥX}`(eޅީe߅`(` @L\A @TUȪ: BFile name not allowed!: )  i( =0+L Y}TUD BNot a disk file!(0` =Insert SOURCE disk, press =,(pӮ(A(O  1B AB1BZ} ` % 1(L/ b(de BJKO L?O` B((*(([}(`ȱޙ((:>Ȍ(`D:`OS.SYS,DOS.SYShh =L*,  VLJ C C,pLiLF#Խ٩Յ׆ \} LB`((:>Ȍ(`D:`OS.SYS,DOS.SYShh =L*,  VLJ C C,pLiLF#Խ٩Յ׆ )" \u v `u Lx w gw W L_ a b u L_ !:!Z!z!!^} v v u v L_?>% Z:B"% % ?:Z:B"%  >?*Z:B"%  _}(*#!222 2 %?(44444 >- >?*Z:B"% :> %?(!Z3 `}%?(!Z5 %?(!Z0 !, CHECK YOUR DRIVE.RIVE. ? } a}%`ee#L7"} MAC65 keyboard macro editor BD"E"HI VLy" Written by Theb} Missing Link BXD"E!HI VL" 1> Edit Macro's BD"EHI VL" 2> Save Edc}itor BםD"EHI VL&# 3> Helpscreen BD#EHI VL^# 4> Quit program Bd}GD#EHI V 1L8&2L<(3$010#1 򥀍01L#4L"` 2ppppppp@B#A#-ace}-acro%ditor60$ MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM4he-!#isagreatassembler butyoucantusef}keyboardmacros4hispro gramwillcreateafileforyoutousethesemacrosinthefutureg}3tep3electoption3tep4ypeinthekeyboardmacros3tep3avethemah}crofile3tep!ppend-!#tothesavedfilewith$/3or4urbo$/3#/09-#/- -i}?+%93#/-!0ressanykeyL"Lg&} Type: 012456789j}, [S]ave or [ESC] B@D&E'HI V SL(L"0:3L"w TL&Macro SHIFT/CONTROL/ BDk}&EHI V TUw L&Orgin: BD&EHI V T Uw 80 a b w  wl} w Lo'Change this one? [Y/N] BXD'EHI V YNнL8&L'Enter new macro (Start to exit) Bm}D'E"HI VL'New : BD'EHI V UTw  w w L(L8&BJn}KL_(D1:KEYEDIT.COMPD(E VL) BtD)EHI V BD EԝH I V BD)EHo}I V B VL"BJKL(D1:M65KEYS.COMD(E VL) BzD)EHI V BD EНHp}I V BD)EHI V B VL8& ) !" L)DISKERROR!!, CHECK YOUR DRIVE. BD)q}E!HI V L""HI V B VL8& ) !" L)DISKERROR!!, CHECK YOUR DRIVE. BD)ZZjL?ZL_L_L^Lu`Lg`L?aLaLaLaLaLaLaL_L^L7`L _LA`L ^LzaL^YYҢ}ﺆ | |& |s} | a#iЈ a aiЈ a `  ^ ^ g`ܩݩ [[ jj K[ t}_ _ _$P l ` ^LZ) $0PLZ j j K[LZHH`)L[ | a au}pکcۥʢʠ ͡څ$Y= 0f$)`I@($)`L[)G I av}ГЏ$ J`L |L[JfL[e΅`) e$8iJJJi`)if`\\\\w}\+*= _g\` [\\\ K[L`8J ͘5͕ \L```ҥ)Lg`x} ^`>]1]P]X]`] _\` \\ K[L`$0 ͦϽY%͝Y 2]L`I` I0`ϥ)`8LL]iLy}L]eLL]G]:]P]X]`]]]] y]$0 aϝY ;]L` i]j] K[L``$0YYYʩ az}Y` aYY YY``S 7``0') a ei ai$ aФ`H{}ҍ 00) 08 109hh@ Ҡ2e1i123 !^2435٥<<˩8$  ^LlLg`}Y) ~Y|} ~Y҆Ӡ``ʎ@̚ | ɟ `l L+_ [[ Iܥ `#,   ֽQ}}`Э J`)֊)?, aL_'/<6Q ~}a {MQ `IL_I@ aL_)~}0:AG a g 80`8`܄` `XeܥYiݦ0i(ܐL`נ܅Ȅ`Ҍ ӌ LS `}^` !Ҏҩ ^ʈ`Y˭ H H,P V ^  aO aϩR -` lh h  ``ʈ} aO aʹY !^ a a a a$jʈ a a a~Y a}Y) aY)0 a%}YJJLa,}Y u`0!҅إӅ٩YW -` l`YY؅ҥم`I aa$0iM #LlL|$0 ?}i(j`H) ahJJJJ iЈ`(eЅА``ަφʠ޽YJJJ)j   ĦʽY))&})Ɉ$^JJJJ)eLsb JJ)>nLUb4j5j ;c ʽY =l7,tj+)% 0 ʽY}) JJ) e  La j8I  ^c `ʦY iɂ Ii kcЈ `}ԄJJJ)֘***)օ֢) `ʦȽYLab} Q)**.*./1#"$($(%6#7 }(!>9/1#"$($(%6#2;:8@?>9/1#"$($(%FOHJGEK*CLN*MUSIPEQ}ST#$:1hibi7elcomtoselectotherfunctiowordesireu}decimaconversioUUUUUUvwrittenby*"c 7ydawnictw.aukowo 4echnicznusesecto3hftgedis2%452. numbecurren}filprevioucontentanwindo4ypeanykeytoexithelmendrivke#trldigitovercodarrowwit30!#% bacexirestorskio} neiimmediatelnexmovseleccursocharacteralteprograedihexadecimadisplabelotoggl4!" owritsigne!scor)nmo}ddirectorin$/3standarperforemptthe)/erroroccurehardwaroperatiowatcchecretroncemorleavabordurinmess}agtypchang-ovebarwitharrowfirsthi%3# othedateconbfosearc$%,%4% cleapatterbytetforwarfunctiomareadi}nifrosid#,%!2 bareathisfunctiondirectlfromeditwindowsectnextlgthfilemodefilediskl\\](\3}\P\NR!T D ar BҐb̊ BMRTHCLLSEEYDAãPN"N# }E3 TDPX 8  9 8 9 8  |Y}Lc|L}L|L5}L|L|8}(а`ЩѠHБ !Zhe`ЩѠ8 |Ј`Z}``XХYј !Z}L$Z |< I8e !Z`ȽS}ЈR}ЈQ}L!Z | l| | (| | l| |} | | | @|hihiHH`8eȦ | J|L@|FMGVBGNFP#S | Q P 0Z)?C *}إƄƃצ@ӆ䂰džå𿥏ҥ Z0L |e`RЈL!ZEЩL$Z S PL$ZȱH Sh S }PL$Z,T8僪0 iPLP |QЈ !Z sPł^Ńȱ) P P% Z P P} P8e P P iP $Z急LP sPQ Q !Zƅ | $S S$S S i+R`stname}extstlenf64/#info64/#map filesfreesectors l R08-SR R0 ,T R0i} ƀ(S)S&S'SS *Z0 R0@ b#m(S(Sȱm)S)Si8-S*S(S.S+S)S8}(S)S/Sm&T$S0Sm'T%SY6S R%T Rƈ` &S'S`RR ʈRL-Z,S,ShSH ShJJJJ%) }iЈ`lvLlLsLn 0Z)?Q`ʆ 0le`&ee&إ Z ZL}Z`ЄѠ ZLZ lɛs`lvl e0 8e浰ȱť lĢ`ȪHHƬ`eЩu} Z ZtL | | ơ lL |i l0 a lL m lL mƠ` `` evHvH`ILZ |  n}vvvn n *ei8e Z 0Z`n Z lĦ ZvLxm 'Zv%$0 }vI0Lxmvvv`ML N n0BƢvO n0)̱v覯ML҄ Z}NϩLs$0ƫ```!YOͲvҝMӝLN氘` Z0 0Z``ЩuѢ$}0uuuʝuuʈ򦫊 $ ȽvJJJJ Z0v$ Zuv ZLouL | |   oei Z l} Z 'Z lLFo p oLFo u & &ee*u)e oLFo ` }``u yl :luL |IJ 5`0 |  L9p |  q |RЈ} |uЈ` q *Z s`ii %p p Z l Z lLp ʆƩ`ƨ`''`` l}iAiw {q |Bw 0l ***)ŧu 0l !Zƣ 9qL{q | Z) })? ZHH l Z Zhh`88e奩i 墅`Bw gh 0l` | Ѕх} !Z` q *Z s`iiE | %p p l iA iwvL0Z |ЩR -Z}0 s`v@?wJJ |***)u 9q p {qĩ # q     }L+rL+r | ʆ #s l lLr81 #s *Z s`hhL |Ʀ``ߠuL | |  s e }Z l Z 'Z_ lL7s | Z Z Z s(LsϥƳƲ Z s(0 0ZLs p sL7s})`u yluL |υL9Z |L*) 9`? l0$4Ӡ@}* \*=L` l0ҩL@iЩР@ i L }`#@R>  `UW `0<`=  0 L {'Jq46BߝD:EJK V BD6E7H7I V BD8Ee8Hf8I VH}  =R S=.= H R Siih}h B VBD:E J V BgD8E 9H 9I VBsD;EHI V B VBߝD}:E JK V B D9E9H9I Vs;ɛs;Hȭs;ȭs;ȭ s;ȩs;=j;=k;l;m;=};=;=i;=i; BpD;EJ Vhs; BD;EHI V B VBpD;EJ V B}D=EHI V B V BD9E:H:I V B VL4p;s;D1: .EXE6:} } DISK BOOT TO DISK FILE by dean wittmann and vince brimhall } ź ͮ } PRESS START A} READING SOURCE DISK } e} MAKE SURE THAT DESTINATION DISK HAS ADEQUATE ROOM TO SUPPORT SOURCE PROGRA}M. ENTER 8 CHARACTERS FOR FILENAME. PRESS RETURN.  D1:} WRITING TWO PROGRAM FILES: } d1:filename.exe d1:filename. } to load program }: USE BINARY LOAD IN CURRENT DOS TO LOAD  } OTHER }WISE REBOOT DOS AND RUN PROGRAM.AS:E:;e;BDEJ VBHI4 D4LDE V  }L i;i;;;E V ̭ͩΩ4ϠΑꈱΑLr/*, \*"/`̠L ;;  }l <(< T v_ \b \`4ꈱΑLr/*, \*"/`̠L ;; 6(0X.Y. - -(( -0.1 (.. ( , ,;. (..آ.L:(ש. (}..к. 6*  . ( )*L2(// c,.H (h`.(((((( .` `}... 6* U. - , - ) )` - ) - * * - - )-.) ,L. -.... ;-L)." , ,}( g. . ). L.! .. )* - ,L)i(i -< < -L)<<`.. -.i..i}. )-`<.<.`<.<.`.8.......` {- , , ,`. c,. '/0 '/ - -,/(}.  `)i1}0m0.` ,..B|D0EHIJ V0wBHID0E V0W}HP08 Ƚ08 .. .i i..@Љ L..T/( )*L9*.. Z}, - - u, , ,L9*3}0m0Ii ..o0 n0.ʩo0` u,3.i.... .i }iLl+6.8).ο...8 Ll+.i.. -Ll+.80.8(Ll+X}Y` Z, , - Z,`I `  `(`.`.XiPYi` ,`` j-}(` j-D0( , ,+` j-!` M-. S-. S-` M-. S-. S-` M-. S-. S-` M-< S-< S-``HJJJJ}.h).` Z,ii` j-0(` Z,|/( -/( - ,`i(i`..B}.H.ID6TABSLQSCRN@ PLINELO8J QSCRNT PLINEHI8^ INCSCRh3r)>| HTABSL$X; --------- THE MENU ---------%}-- Q>DLP0 Q>DLP1MENU SHOWMENU INICH$> &CHOICEINVITQ>;; INVERT ON $CHOICE SHO&}WOPTCHECON KEYWAITSLOOP SCAN(> FSELDUS(>& HDOWNO0X; BAR DOWN:Q>;; INVERT OFFD $CHOICEN SH'}OWOPTX #CHOICEb $CHOICEl (>MAXCHv HINVIT$>MAXCH &CHOICE !INVIT DOWNO(> HSLOOP X; BAR UPQ>(};; INVERT OFF $CHOICE SHOWOPT "CHOICE QCHOICER> HINVITQ>  PCHOICE FINVIT X; CHOICE IS SELECT)}ED*SELDUSQ>;; LOAD4 SELECT> HABRTHQ>R $>LCHAN\ OPENf DOITp PRESANY;; ANY KEY..zABRT!MENU X; TA*}BLESOPTABLO F0 F1OPTABHI F0 F1LINELO =LINEHI =X; SHOW MENUSHOWMENU CL+}SQ> PINVFLAG$> DRAWMENA5Q>;; INVERTED OFF SHOWOPT$7.>82B (>MAXCHL HDRAWMENV:`(X; SHO,}W A MENU OPTION, X = CHOICE NR.jSHOWOPTPINVFLAGt QLINELO9~ PSCRN QLINEHI9 PSCRN QOPTABLO9PSEMOCO-} QOPTABHI9PSEMOCO$>%> SEMOCOQ9 LINVFLAG P@SCRN732 (> HSEMOCO:(X; CONSOLE CHEC.}K2CONSOLQ < HCONSOLFQP:Z!X; JUMP TO THE CHOSEN PROGRAM!dDOITQCHOICEn PFLAGx$X; ---- SHOW FILE INFO, RIP/} ----- QFLAG FNORIPX; WANNA RIP!Q>;; SAVE SELECT;; SELECT DRIVE SFRES;; RESET SAVE FILENAMENORIP M0}AKTB;; TABLE LAYOUT LZP;; RESET LINE POINTER TWOGET COMCHK FSKIPPEX; DATA FILE DATLOAD:&X; FILE ST1}ARTS WITH $FF,$FF -> COM!SKIPPE TWOGET;; LOAD ADR."'CONPRG0 DEFLOAD;; DEFINE LOAD ADR., TWOGET6 DEFEND;; DEFINE2} END ADR.@ DEFLEN;; DEFINE LENGTHJ SHOWLOADT SHOWEND^ SHOWLENh QLENrM>;; LEN > 32K ?| FWILLFIT ITS3}BIG !EXITNOWWILLFIT LOAD QLEN HLONGQLENR> HLONGX; CHECK RUN/INIT ADR.QLOADADRR>4} HLONG QLOADADRR>FRAR>& HLONG0RA SHOWRI: !INFONLYDLONGQFLAGN FINFONLYXX; FLAG = 1, RIP IT!b5} ASKRIPl6v CLRMSG8 HINFONLY SFINC;; FILE.001Q> $>SCHAN OPEN SAVE $>SCHAN CLOSE%>6}! Q> ;; "*"P@WRITLIN7X; INFO ONLYINFONLY#LINE  QLINER>  HNIVOL* PRESANY4 MAKTB> LZPH !CON07}RNIVOLQWRITLIN\,fO>(p PWRITLINzQWRITLINO>PWRITLINX; ALWAYS SKIP $FF,$FFCON0 TWOGET QB8}UFFERR>HNOOQBUFFERR>HNOO TWOGETNOO!CONPRG0X; CHECK FOR COM FILE COMCHKQBUFFER R>9} HNOCOM$ QBUFFER. R>8 NOCOM:B X; LOAD DATA, DISPLAY LENGTHL DATLOADQ>V PLEN` PLENj LOADt QLEN~ :}, O> PLEN QLEN O> PLEN SHOWLEN : X; DEFINE LOAD ADR. DEFLOADQBUFFER PLOADADR QBUFFE;}R PLOADADR : X; DEFINE END ADR. DEFENDQBUFFER PENDADR( QBUFFER2 PENDADR< :F X; DEFINE LENGHTP<} DEFLENQENDADRZ ;d SLOADADRn PLENx QENDADR SLOADADR PLEN #LEN HONEMORE #LEN ONEMORE:=} X; ANY KEY.. PRESANY SHOWANY KEYWAIT GETKEY CLRMSG : $X; ------- FILE SELECTOR -------- 0X; THIS PROGRA>}M WILL DISPLAY THE DIRECTORY OF 6X; A CHOOSEN DRIVE (1-8) AND LET YOU SELECT A FILE! 3X; NORMAL EXEC: FNAME CONTAINS THE SE?}LECTED FILE" X; A (ACCU) = 0, X; ABORTED : A (ACCU) = 16 X; SCREEN SETUP@ #SELECTPLSFLAG;; LOAD/SAVE FLA@}GJ NEWDRIV CLST QLSFLAG^ HSAVMh X; A = 0, LOAD!r %>'| LOACPQLOAMSG8 P@SCRN7 1 ILOACP GCSEL X; A <> A}0, SAVE! SAVM%>' SAVCPQSAVMSG8 P@SCRN7 1 ISAVCP CSEL INCSCR INCSCR %> INSCPQINSMSG8 P@SCRNB}7 3& )>(0 HINSCP: X; SELECT DRIVED SCKEY$>N NKCMPQX RKTDS9b FTOUCHEDl 2v (> HNKCMP FSCKEY TOC}UCHEDQ> P (> ;; ESC? HNESCA Q> : NESCAA M>;; 8 = RETURN , O>1 PDNAME PFNAME QLSD}FLAG FLOADFL :* LOADFL DELINE4 %X; INIT. LINE COUNTER AND ENTRIES!> Q>H PLCNTR PENTRS\ X; OPEN DIRECTORYf $>E}LCHANp Q>;;OPENz PICCOM9 Q>DNAME PICBAL9 Q>DNAME PICBAH9 Q> PICBLL9 Q> PICBLH9 Q>;F};DIR PICAX19 CIOV GCLOZ X; GET A FILENAMEGETFN$>LCHAN Q>;;GET PICCOM9$Q>. PICBLL98Q>B PICG}BLH9LQ>DIRECV PICBAL9`Q>DIRECj PICBAH9t CIOV~ GCLOZ QICBLL9R> FCLOZ X; DISPLAY FILENAME ONH} SCREEN$>%>SHOWERQDIREC9;S>  P@SCRN732(>  HSHOWERQ> P@SCRN7( SHEXT32QDII}REC9<;FS> P P@SCRN7Z2d(> n HSHEXTx #LCNT QLCNTR> HNOPROBQ> PLCNT #SCRN HNOPROB J}#SCRNNOPROBQSCRN,O>  PSCRN QSCRNO> PSCRN #ENTRS" QENTRS,R>@6 HGETFN@CLOZ$>LK}CHANJ CLOSET QENTRS^ HFILSELh%>rDPDMSGQEMDIS8| P@SCRN73)>( HDPDMSG PRESANY !NEWDRIVX; FIL}LE SELECTOR!FILSELQ> PCHOOS PLCNT SETMP INCSCR INCSCRWOPPA INVERTBEK KEYWAITSCKEY2 SCAM}N(>& HNONESC0 !NEWDRIV:NONESC(>;;D HDIZNOTNX; MAKE FILENAME!XOTHERQDNAME;; DRIVE NR.b PFNAN}MEl%>v$>CFNQ@SCRN7N>FNULL;; A SPACE!,O> R>.;; DOT? HNODOT &DOTHERENODOTPFNAMEO}92 NULL3)> HCFN$X; LAST CH. MAY NOT BE A DOT! "." QFNAME9R>. HZEE*04 ZEEQ>>PFNAME9P}HQ>R:\DIZNOT INVERT;;NORMALf(>p HNRIGHTz QCHOOS,O> RENTRS FWOPPA PCHOOS #LCNT QLCNTQ}R> HHEBUURQ> PLCNT #SCRN HHEBUUR #SCRNHEBUURQSCRN,$O> . PSCRN8 QSCRNBO>L PR}SCRNV !WOPPA`NRIGHT(>j HNLEFTt QCHOOS~;S>R> FWASSA PCHOOS "LCNT QLCNTR> HTORNADS}OQ> PLCNT "SCRN QSCRNR>  HTORNADO "SCRNTORNADOQSCRN(;2S> < PSCRNF QSCRNPS>Z T}PSCRNdWASSA!WOPPAn NLEFT(>x HNDOWN QCHOOS,O> RENTRSEWOP PCHOOS INCSCRWOP!WOPPAU}X; NOT RIGHT, LEFT OR DOWN??X; THIS MUST BE UP THEN!NDOWNQCHOOS;S> GWOP0 PCHOOS QSCRN";,S>(6 PV}SCRN@ QSCRNJS>T PSCRN^WOP0!WOPPAh SETMPQXr PSCRN|QY PSCRN:X; CLEAR SCREENCLS SETMW}P$>WISCR DELINE INCSCR0 HWISCR SETMP:INVERT%>BLOKIESQ@SCRN7N> P@SCRN73&)>X} 0 HBLOKIES::D PAUSEQ>NP X WEETQ b HWEETl:vDELINE%>CWISREGP@SCRN73)>( HWISREG:Y}!X; SCAN UP, DOWN, LEFT, RIGHT! SCAN$>NKCMP2Q RKTFS9 FTOUCH22(> HNKCMP2  FSCANTOUCH2Q> Z}P*:4X; LINE ZP!> LZPQ>H PLINERQX\,fO>Pp PWRITLINzQYO>PWRITLIN:X; KEY WAITKE[}YWAITQ>P PAUSE: X; GET KEYGETKEYQR> FGETKEY:X; CLEAR MSG.CLRMSG LASTLIN%>$Q\}>.FILINVP@SCRN783B)>(L HFILINVV:`X; ASK RIP!jASKRIP LASTLINt%>~CORIPQRIPMSG8 P@SCRN73)>]}( HCORIP KEYWAIT GETKEY R>+;; "Y":X; PART IS TOO BIG!ITSBIG LASTLIN%>! Q>;; "!"P@WRITLI^}N7 :X; SHOW LOAD ADR.SHOWLOAD%>( STRING2QLOADADR< OUTHEXF QLOADADRP OUTHEXZ:dX; SHOW END ADR._}nSHOWEND%> x STRINGQENDADR OUTHEX QENDADR OUTHEX:X; SHOW LEN.SHOWLEN%> STRING QLE`}N OUTHEXQLEN OUTHEX:X; SHOW RUN/INITSHOWRI%> STRING"QBUFFER, OUTHEX6 QBUFFER@ OUa}THEXJ:TX; PUT STRING SIGN ($)^STRINGQ>hP@WRITLIN7r3|:X; HEX OUTPUT TO SCREEN OUTHEX5V?V?V?Vb}?> QHEXSTR9P@WRITLIN737M>;;%1111> QHEXSTR9P@WRITLIN73&:0X; PUT PTR. TO LAST LINE:LASc}TLIN SETMPD QSCRNN,XO>b PSCRNl QSCRNvO> PSCRN:X; ANY KEY..SHOWANY LASTLIN%>CAMSd}GQANYMSG8 P@SCRN73)>( HCAMSG:X; MAKE TABLEMAKTB SETMP%> NURDQTABTOP8 P@SCRN7 3*)>(4e} HNURD>$>HNNEE INCSCRR%>\COPLQTABLN8f P@SCRN7p3z)>( HCOPL2(> HNNEE INCSCR CLRMf}SG:X; SCRN = SCRN + 40INCSCRQSCRN,O>( PSCRN QSCRNO> PSCRN:$X; GET TWO BYTES!.TWq}o?F#DOS SYSF6'DUP SYSF]KEYEDIT COMFBrTRBOWATSCOMFIBURP COMFBOOTOFILCOMFCOMTOOL1COMFZ COMTOOL M65F-COMTOOL1DOCFGDIRHEAD2BASF0DIRHEAD2DOCF"(MYCOPYR2COMF#JCOPYMATECOMF0mCOPYMATEDOCFCOPY2000COMFUS4 COPF`FB COMFC3FB DOCF vDEN OBJF DEN DOCOGETQ>8PLENBQ>L PLENVX; LOAD DATA`LOAD$>LCHANj Q>;; GETt PICCOM9~QLEN PICBLL9 QLEN PIr}CBLH9Q>BUFFER PICBAL9Q>BUFFER PICBAH9 CIOV INOLER)> HERROR $>LCHAN QICBLL9 PLENs} QICBLH9 PLEN(EXITNOW$>LCHAN2 CLOSE< NOLER:FERROR$>LCHANP CLOSEZ7d7n:xX; OPEN FILEOPENPIt}CAX19Q> PICCOM9Q>FNAME PICBAL9Q>FNAME PICBAH9 CIOV GERROR:X; SAVE DATASAVE$>SCu}HAN Q> ;; PUT PICCOM9QLEN PICBLL9" QLEN, PICBLH96Q>BUFFER@ PICBAL9JQ>BUFFERT PICBAH9^ v}CIOVh GERRORr:|X; CLOSE CHANNEL CLOSEQ>  PICCOM9 CIOV:HX; ROUTINES TO GET SAVE FILES LIKE; FILE.001, Fw}ILE.002, FILE.003 ETC.X; SAVE FILENAME RESET SFRES%> $DOTHEREFINFNQSFINIT8PFNAME923)> HFx}INFN : X; SAVE FILENAME INCREASE& #SFINC$DOTHERE;; HERE'S THE DOT0 2: 2D 2N #FNAME9X QFNAME9b R>:;; >9 ?y}l HQINCv Q>0 PFNAME9 0 #FNAME9 QFNAME9 R>: HQINC Q>0 PFNAME9 0 !#FNAME9;; NO CHz}ECK IF >999 QINC: SFINIT A.000A  !X; DL ! DL p=p! B ! TOPMSG*! 4! B>! LH H! ====R! {}=====\! =====f! =====p! Az! DL! LSFLAG !INVFLAG !DOTHERE ! FLAG |}! LINE ! CHOICE ! LCNT ! ENTRS ! CHOOS !LOADADR =!ENDADR =! LEN =!X; HEX STRING!"}}HEXSTR A0123456789ABCDEFA"!X; KEYCODE TAB. DRIVE SELECTOR"KTDS ===$" ==3=5= =." X; KEYCODE TAB. FILE S~}ELECTOR8"KTFS ==== =B"6TOPMSG Aֱ̠͠é٠ΠAL"F0 ASHOW FILE INFOAV"F1 ASTRIP} COM FILEA`"6INSMSG A PRESS 1..8 FOR DIRECTORY Aj"5EMDIS A THIS DISK IS EMPTY At"6TABT}OP AĠĠȠίA~"5TABLN A | | | | A"6LOAMSG A } LOAD FILE: A"6SAVMSG A SAVE FILE: A"6ANYMSG AӠ٠٠ϠŠ}A"6RIPMSG AРӠԿٯΩA"!X; HERE WE CREATE THE FILENAME"FNAME AD?:FILENAME.EXT}A" "X; THE DIRECTORY MASK"DNAME AD?:*.*A" "X; ENTRY BUFFER"DIREC AFRANKENSTEIN RULEZA# # COMTOOLT|COM TOOL V1.0-------------A long time ago I made a useful utility to convert an appended (*) COM file into original data f}iles. That program was written in Turbo Basic and I've used it often. One day I thought about changing the program a little s}o it could also be used to get info from an appended COM file which is possible with 'Turbo dos' (option HEA). I also thought} about some more nice options and I finally decided to start all over again, but this time I would use assembly. The result }of my work is an very short executable (COM) file of about three kilobyte named COMTOOL.COM (CT). The program and source code} are shareware so please don't spread the program without this text. Shareware means that you should send me a donation if yo}u like the program or if you use source code (or parts of it!!).* An appended COM file is the final (executable) file which} mostly consists of many (short) files.With the program you can rip COM files and get info about a COM file. The usage is v}ery easy. Simply use the cursor keys (without the control key), the RETURN key and ESCape.After booting the program you'll }get a menu with only two options "Show info" and "Strip file".If you want to know how a certain COM file is build you can se}lect the 'Show info' option. When you select it (by pressing RETURN) it will ask you to select a drive (from 1 - 8). Yes! You} can use the ramdisk! After selecting the drive it will display the directory of that drive and the first item on the list wi}ll be displayed inverse. Now you can select the file by using the cursor keys and RETURN. Directly after selecting the file t}he program displays a table and starts to fill it with hex numbers. If you didn't select a COM file it will only load the who}le file and display the length.But if you choose a COM file it will nicely display the START and END addresses, followed by }the lenght of that part. If we're dealing with a RUN or INIT address the program will also display the contents of it in the }RUN/INI column. Hue what? Simple, you can exactly locate the RUN and INIT addresses of the examined COM file! Maybe you like }to roam around in a demo file, so now you can write all the addresses down (or make a screendump with help of Qmeg, Supermon }or whatever). It could happen that a "!" sign appears in the RUN/INI column. This means that CT discovered a part which was b}igger than 32K (this is the max. size of the CT buffer). There's nothing you can do about that or eh.. well, maybe I'll enlar}ge the buffer in a future version.Let's select the other option 'Strip COM file'. You'll notice that it's almost the same a}s the 'Show info' option. However, with this option you can actually strip the COM file and store its clothes on a disk!Ther}e's another difference, right after you've selected the 'load' file CT will ask you to select a drive again! This is nessesar}y because CT wants to know on which drive you would like to store the stripped parts. It won't ask for a 'save' file. The sav}e filename is build from the load filename and a number. For example, if you strip a file named 'LITTLE.COM' CT will create s}ave files like 'LITTLE.001', 'LITTLE.002' and so on. WARNING! Never strip a file with the extension '001' or any other number} because in that case CT could destroy the original!After displaying a normal START, END and LENGHT it will ask you if you w}ant to rip that part. If you answer 'N' it will continue to show the info of the next part. In case you answer 'Y', CT will s}tore that part on the earlier selected drive and a '*' sign appears in the RUN/INI column.The RESET key can be used to retu}rn to DOS and press ESC if you want to go back to a previous level.So, what's the use of all this? I don't know why it's us}eful for you but I'll tell you why I made/use my short utility.I've been programming for a long time in the ATMAS (assembler}) and always got sick of all those short COM files. All my disks are full of these 'what the hell is this' files. Every time }I made I demo I got a disk full of crap, the source code and the final COM file. Now I can simply delete all the crap and the} only two things that remain are the source and the final version. CT can strip the final version into all those short files }again so nothing is lost!Because of the fact that I now use ATMAS and ST-65 (a cross assembler for the XL/XE on the ST) ther}e was another problem. Since ATMAS loves COM files and ST-65 loves pure data files (and I like pure data too because it's rel}ocatable) I had to convert these files. This can be done with help of a simple Turbo Basic program but now I can use CT for t}his job so I don't need to load Turbo Basic anymore.Some technical info:CT is loaded at $2800 so it won't cause trouble wi}th most DOS's (I hope).The source is written for ST-65. More info about ST-65 can be found in the first issue of MegaZine.I}n the source you can find a 'file selector'. If you like to use this please let me know.The 32K buffer starts at $3C00.I'm} planning to release a more powerful version of CT in the future. Here's a list of possible extensions of the program:- A fi}le builder which makes it easy to append files- A larger buffer (42K or 46K)- A print option- More features in the strip f}unction.- A protector so you can protect COM files from people who want to change them with help of a sector editorWell, i}f you can think of some more features please let me know so I can think about it!Greetinx!-Frankenstein-Reactions/donat}ions to:The High-Tech TeamP.O. Box 1648800 AD Franeker(Frl.) Hollandut it!Greetinx!-Frankenstein-Reactions/donatKh#/#NN1EXINUKENENNNIMNN15N2MASECN12LINP69P70N1N1N1NNN1DPREPREPPWVERIFN191BU}HN25LDHN1N2NMHMEMTMTHYEACVBIDLS@@ BdC @} @ @ @@AU@'@@A(}@@@@@ @!"#$%&A'(@e})AV*Ai+,@-@ .@/0 1!!23456NN7""8@} !!!!|THE DISK DIRECTORY HEADER|!!| Version II |(!!| Written by Joh}n Foskett |2!!| September 1993 |<!!F_6-+6-@+@d=B}7t@dIAYUA_ A`P$$------------------------------Zd 6-6}- An- A@6-&@H- )!Ax36-?:C:,<<@,") A03 AP Ap}"A A##-----------------------------󠛪DK:6. $67,. -67,.}46.:6-D A`=AdAU)"")0.:B2H=$"A$ "B2H}$ AWW!@&* @2)!A$* A()!* A`)"AT)"AUAP''"*+ @H)!@W},AP0  6-%-%&"(>:,067<,.>:,( "-%&(>:,(67<,.>:,@"A&*! 67}<,. *67,.26-&:-%@( %%B2H@@%$%$%+,$ AРЯЩ" "} ',' A6##-----------------------------@ JO -( CUSTOM HEADER#6. .6}7,. 767,.=6-C6-O6-@dT36-?:C:,,6-%-3( ENTER LINE :^D(>-----------D(%E}IGHT LINES MAXIMUM Š EXIThg 6-6-A'A3A= ApL6-F:A,[6-F:A},gAr' 6-$&67,.b'67%,.| -%(: "$@6-?:C:,,-@(&à EXIT Π }NEXT LINE Р PREPARE A@"' A"@xA@"@$ A 련}ä9  6-+$%, 67,.+67,.967%,.7,##-----------------------------},6-?:C:,,-&( PREPARE DISK,6-M"(SELECT DENSITY TO FORMAT:M(&à EXIT Š ENHANCED Ӡ} SINGLE A@"A,"@6-"6.SINGLE, AP."@i6-$6.ENHANCED. AP} A렛&I6-?:C:,,-1(Π PREPARE DISKI( DENSITY SELECTED0//(&PRESS ٠ T}O PREPARE DISK IN DRIVE 1:! A@!@AD:6-?:C:,,-:( PREPARING DISK IN DRIVE NUMBER 1N[)(}FORMATTING DISK IN  DENSITYB(WRITING WITH VERIFYF(O6-F:,[@X "ASD:b%"@}%ATD:lv! 6-C:,6-P:',!6-&$cAi!Ap@-Ar}9AsKAxAWAyc6-?:C:,,I6-?:C:,<<,-?(!DISK FORMATTED AND HEADER WRITTENI A}ӮӠ٩K --(PRESS ٠ TO WRITE DOS.SYS FILE7 A@K@A ӮӠ}[ 6-#6-?:C:,<<<<@7,36-?:C:,<<,9-[(WRITING DOS.SYS WITH VERIFYH( D:DOS.SYS!>}@5 D:DOS.SYSH A䠛9 6-?:C:,,-9(DISK PREPARED IN DRIVE 1'( } DENSITY WITH"'(OUT8( DOS.SYS8(#PRESS ٠ TO PREPARE ANOTHER DISK# A@@# A'}6-?:C:,<<<<@7,' A##----------------------------- 9@-((DI}SK DIRECTORY9D:*.* / (7<,0* ,@/$* A4##-----------------------------}>H2AdAU#K:*)/2$R##-----------------------------\}f:A6--*(HEADER: :#$&%APpM"0@"67$%,.b/67$%,.7-%;(C6}-%M Az AP堛 - (" A@"6-@"$"A ` A } d6-?:C:,,-4(PLEASE ENTER THE FOLLOWINGd(+ENTER NUMERALS ONLY Š EXIT}!* A`蠛9 6-6-@$6-9(ENTER MONTH: 1 to 12 >--C Ap6-A:,& )}!@2-@$9( C A5 #AP-" #"/6-@q5- "6-@- 6.} A06-?:C:,<<,$8 6-6-6-@!-8(ENTER YEAR: >----.E Ap6-A:,}, A)!A @2-;( E Ap8! "6-@Y!-@B "6-@-L%")"@}6-A%-V "6-@v-` "6-@-j 6.=:, A0t堛~6-?:}C:,,-( A@*A` "6- 련ä86-B:,% 67,.}*67,.867%,.7,$""---------------------------- ä᠛(67<&%B:,,.$} ᠨ򩠛88JAN,FEB,MAR,APR,MAY,JUNE,JULY,AUG,SEPT,OCT,NOV,DEC""----------------------------}@6-?:C:,<<@,-@(THE MENU OF STANDARD HEADERS T(0. CUSTOM DESIGN3(1. GENERAL PRESENTA}IONT(2. GENERAL FREE PRESENTATIONg+(#3. SINGLE PROGRAM FREE PRESENTATIOND(4. GENERAL COPYRIGHTg(5. PROTECTED PRO}GRAM COPYRIGHTn)(!6. PROTECTED PROGRAM PRESENTATIONL(7. PROTECTED SHAREWARE PROGRAMn(8. DATED GENERAL PRESENTATION}(M*("9. DATED GENERAL FREE PRESENTATIONM(PLEASE SELECT OPTION: 0 to 92S -2($ CYCLE COLOURS RESE}TDAY@XPAS$<""----------------------------FP? A`'6-F:A,}?6.UNSPECIFIED ERRORZ;"A8)"A9;6.NO RESPONSE FROM DISK DRIVEd("As(6.CANNOT FORMAT DISKn}B6-?:C:,,@!->(ERROR  ENCOUNTEREDB(x00((Π PREPARE DISK Š EXIT A@}"A"A A""----------------------------堛_6-@6-%6-}%'6-%/6-%76-%?6-%G6-%O6-%W6-%_6-%G 6-%6-%6-%#6-%+6-$36-%;6-#}G6-Ah A`A@X1A@t76-?6-%E6-h;@,;@,;A8,II;},;,;,;,;@3,;,;,;,;@x,;@4, 6. 67,. 67,.h+6.!Π CONTINUE }Š EXITA6.PLEASE WAIT....h6. pp0F@Ann6.dhshhhhϥmhhhhѩ̅ͅΩҢ}(% eͥͅe΅ːޥXeͥͅYe΅΢БE967A,.&i(ͥi`˩ϩЩ(БE6.h }S`pX6.NHMO@. NhLNNii۩p6.hhh˩`C 6-C:},6-P:',!6-&$267B:,%,.>:,C67B:,%,.>:,A`Aa"W 6-C:,6-P:',!6-&$-BB}9AHEAIWBBAU,Ǡ6E6-P:F:AB,',&'BBy$3B2wEA}AP@E!6-?:C:,<$A H%A$,)-A$A H%A%E JT_AR4( } the} diskdirectory header\(# VERSION II _$^""----------------------------h򠱠r77},|PRESENTED|,|BY JOHN F|,,@|򠲠CC,|PRESENTED|,| FREE BY |,|J.FOSKETT|,},@򠳠[[,| A |,| PROGRAM |,|PRESENTED|,| FREE BY |,|J.FOSKETT|,,@}CC,|COPYRIGHT|,|J.FOSKETT|,| (C) |,,@򠵠[[,|PROTECTED|,| PROGRAM} |,|COPYRIGHT|,|J.FOSKETT|,| (C) |,,@򠶠gg,| A |,|PROTECTED|,| PROGRAM |,|PR}ESENTED|,|BY JOHN F|,| (C) |,,@򠷠gg,|PROTECTED|,|SHAREWARE|,| PROGRAM |,},|J.FOSKETT|,| (C) |,,@򠸠OO,|PRESENTED|,|BY JOHN F|,,| |,},@򠹠[[,|PRESENTED|,| FREE BY |,|J.FOSKETT|,,| |,,@}D:DIRHEAD2.BAS򠹠[[,|PRESENTED|,| FREE BY |,|J.FOSKETT|,,| |,,@THE DISK DIRECTORY HEADER Version II=====================================September 1993By John FoskettBy reading th}e directory of commercial disks it can be seen that in many cases the directory contains a header of some form giving some de}tails like a title, version, date, etc. Such a header could be written to a newly formatted disk by using a disk sector edito}r but this can be confusing and time consuming, since it must always be remembered how a disk stores its data. In order to ov}ercome these problems in a user friendly way, "The Disk Directory Header" was born.The Disk Directory Header can create a h}eader consisting of upto eight lines, completely filling the first directory sector if required where each line can consist o}f upto eleven characters, the normal file name length.The Disk Directory Header provides nine standard headers which can be} selected from the main menu as well as a way of creating a custom designed header.THE SCREENThe top section of the scr}een comprises of the title. The central and the lower sections comprise the main working part of the screen.USING THE DIR}ECTORY HEADERWhen The Disk Directory Header is first run, the centre section contains a menu and a prompt. To select one of} the nine standard headers, press the appropriate number key, the menu will be erased and the chosen header printed in its pl}ace on the left side of the screen. If the chosen header requires a date then this will be requested before prompting for the} formatting details.As a part of the main menu, the bottom line of the screen contains a small two option menu, as a remind}er, that at any time START can be used to cycle through the background colours whilst SELECT is used to reset the colour back} to blue.If a custom designed header is selected from the menu, the menu is again erased and the necessary details printed }to enable its construction. As each line is entered, it is printed to the screen and a menu is displayed on the bottom line. }Select "N" to continue and enter the next line, "P" to exit early and to prepare the disk or ESCAPE to exit back to the menu. } If and when an eighth line is entered, the 'N/P/ESCAPE' menu is bypassed and control is passed directly to the 'Prepare disk }' section.PREPARE DISKThis section is entered after a header is completed and RETURN pressed, ESCAPE will exit back to  }the menu.Prepare disk allows a disk to be first formatted in either single or enhanced density, ESCAPE again is used to exi }t. "S" is pressed to select single density or "E" is pressed for enhanced density. After selecting, 'CAUTION' is displayed on } screen requiring "Y" to be pressed to continue. Any other key will return back to the previous stage to select the format de}nsity.Upon pressing "Y", the disk which is currently in drive #1 is formatted and the header written into the directory. Af}ter this, the disks directory is read and printed to the right hand side of the screen to confirm its presence.Once the hea}der has been written and the directory displayed, the option to write the DOS.SYS file is given. Upon pressing "Y", the direc}tory display on screen is erased and the DOS.SYS file written to the disk and locked. The disks directory is then once again }read and displayed.Regardless whether or not the DOS.SYS file has been written to the disk, the option to prepare another d}isk with the same header is presented. Pressing "Y" will allow the format density for this disk to be selected. Any other key} will exit back to the menu.MODIFYING THE STANDARD HEADERSNaturally the standard built-in headers will need to be amend}ed to incorporate the users name rather than my own name. The standard headers are stored at the end of the listing in the fo}rm of basic DATA. When modifying the headers, the single line format must be maintained due to the way that the program selec}ts the various headers. Each set of header DATA terminates with the '@' character which is most probably the least likely cha}racter required for a header. It can be used within a line of characters but must not be used alone. The limitation of a maxi}mum of eight lines where each line comprises of a maximum of eleven characters must also be maintained. The main menu should }also be modified to reflect the changes made.If a modified header needs a date, then its position must be considered so tha}t the details can be printed within the header on screen and for inclusion into the string for writing into the first directo}ry sector of the disk. For this reason it may prove more convenient to leave the date position where it is and to simply modi}fy the header around it.TECHNICAL DETAILSA VBI routine is used to control the background colour cycling, to disable the} attract mode and to disable the CONTROL-1 stop-start toggle. It also provides an optional keyboard lock to ensure that only }the normal uppercase character set ascii codes can be used when selecting from the menus. This part of the VBI cancels any ac }cidental operation of the respective two keys. The keyboard lock is disabled when the custom designed header is selected to e!}nable the use of all characters.All text erasing is achieved by using a machine code routine which defaults to erasing the "}lower section of the screen only, unless otherwise set up.The cursor used within the data entry section is 'player zero', i#}ts colour is also controlled by the VBI according to the background colour. A small machine code routine is used to ensure th$}at the player zero stripe is clear before the cursor is defined.A small machine code routine is used to access the internal%} routines enabling data to be written to the disk.A custom display list enables the use of a mixed mode text screen.The a&}bove stated machine code routines are stored in the form of relocatable machine code strings. The display list is also stored'} as a relocatable string. The strings being directly defined to eliminate initialising time caused by the loading of data.ed{AA 0  D  L --------MYCOPYR v2.1--------BOOT TO MENU BY JOHN E. (TEBSF) --------THIS IS A GOOD CO)}PIER! --------,0Lt/0ɢ  ,,杩PAHAS S膂 *}   H YΑ hAɢD!日꥖DLӌӌ@ө@ӭ@`+}Р@xHԩө@h(`  0 0>,}Yi ʆR xX RS L T   ؠ   R -}L{ >b:d8> H. ɕLʩ, L+WʼnAP9+C.}ł 0L5   L Lw΢...h { } MyCopyR! 2.1 /} by Glenn Smith OURCE DRIVE........#.ESTINATION DRIVE...#.ORMAT DESTINATION..ΛRITE VER0}IFICATION.ƛLTRASPEED SKEW....ƛ OR FOR DIRECTORY }  PRESS } 1}Ǜ} қ} қCHECK DISK} қ} ț CHECK 2}DISK} SECTOR} SECTOR}INSERT DISK} INSERT DISK} INSERT DISKS  THEN3} PRESS  } ٠ƠĠӠ4}٠Ϡś} PLEASE INSERT A DISK, THEN PRESS TO BOOT DISK, OR PRESS  TO RETURN TO  5} MyCopyR! 2.1                    6}RPW fO@f !"M18 (8 ; 8 (ҩmi:; 7}< =x:23454 Μ ,  Q ,P  νе ( X0`234 5`8} 21 ,350 2 4 2 L 1 )@ҢLQ 1,350 &2 4 2 19}`08`  < ACE,0ɋ8` `& '0L\`e1i1`,07 ,_ҩxҭҍ :})  `_ҩxҩ,,,8`H)oҩxh `#,ҍ ҩ(ҩҩx`jj)?j)`Ң`H;}?ʎ @ , 08 h`   L{  iT  <}Y R   ^ в   'L * 0 =} rT,,   ^ I    *!)% w l T r>} L    dL Ł'ŁR #: Q ` M-`  ?}, `i   ``eeɀń(`@ L@}̅Lk   8` 8`  摥 ,ŋ`ř`  `S S0:) A}) Z gR 6 0`Ł  hhL hhLO `HhLҥh@B}` R̠  LdH)JJJJ h) ` ii`DE BH V"/`N,O g EC}L L Śڍ ॎƥ¢N  0L <0LL 0D}ťʢ)FG  6f,!,"  a LI`/I"/`",,,L  E}0ۄɀL  N *R 0 r  qL% R'S C)@1U IF}TTiLlTU͠ `   ` *R 0 Ȅ ` 0 rL ЍtG} t@swLV̠"/@> !$= $$H} $ Z$F> H$ ?$˩ r$ $Ԍ0̩ r$ $Ԍ1= !$0A '$= !$6A '$< %@ Z$ T$  I}l l  L= !$0A '$= !$6A '$< %@ Z$ T$  3/! `P&&%B&ƍ&% LJ & &LG`  Lt`B!%L0K}HӍ@Ӡ@ӭ@.L(%)%/*%Ӎ@ÎӠ@ӭ@Q/P " SL}1*-* &-*膂 ,W P Yi%%%MP@ ԍҭ)M}өP h؅( !p@Ltꍂ%%%LP"w*/*x*0*y*1*`` ө jBDN} ELVE:} PLEASE REMOVE ALL CARTRIDGES AND THEN RE-BOOT1N@ ------------((((O}$Hl̅L%0 ؅0L%P}Ӎ@Q}҅ RS &) &T) &* &/* &G* &) & $L]#.&88X>v:xL&L&,WR}P惢ƃw*/*x*0*y*1*>湢ƹw*s*x*t*y*u*łi0*L|"S} &R &膆 &eȅ㦁 &  Y &R T} $ %  * %- ( %i 溦ȅ0@ % ) U} %T ;%2 & $ % &  * %) % Ҡ* %éT % ;%L#}* & V}& %Lt䥀Ł6Ł'+ +>+ &U+L & &P`ee" /`  <㦺 W}y+  y+ y,y,Șȅ㥈YLp˩`@ hhLk$` &l+ & %L%M   X}N  %  %L'HJJJJ %h) %` ii` BƩ`Mhb^()* &f--Y}  &- !Ս & * %𜦅(`  &@L'`++Z}*iY+ & &i 0Ӎ+ '/č+膆 &i 0 ' + &L'+ & 8n '0S[})@#-G0i i挊)i˭ x 0 ' 8n '+ &Lt@R\}1  0E H?ʎ @ Y0h  0:; < =]}ҩҺ7x 60:2344 (234, ( ),P (ҥ 0)X07Х` )21^} 4 2 ) Z)L(1 )) 4)L)1 b)2 Z)4 b)1`LC) 4) )< b)AC ELE)0C&)_}'L\䩊0,06LW(L(e1i1`) ߍҩҭҍ )  `LC)H)ҩh `#,ҍ ҩ(ҩҩ``}}COPYMATE 4.4 (C)1987   & DISK DIRECTORYOURCE DRIVE.........#ESTINATION DRIVE....#ORMAa}T DESTINATION....RITE VERIFICATION....OPY FORMAT........YESYES.NO} COPY COMPLETED  PRESS Ԡ} b} FORMATTING} FORMAT ERROR} WRITE ERROR} READING SECTOR} WRITING SECTOR}INSERT DESTINATION DISK} INSEc}RT SOURCE DISK} INSERT BOTH DISKS THEN PRESS Ԡ CHECK DESTINATION} Š? ?Ġd}} ɯϠ Ӡ٠٠     e}   f}hphpphphpphpq(((((((((((((((((Yg}(((((((((((((((((Y----.&.(h}  (  (    ( (   i}  (     j}" 0@0k}0%Q/ @@/`΢   l} Ll l  @/`΢   }=================================== Š CopyMate 4.4 is a fully automatic,high speed capable, singn}le ordouble density disk copier. Ver-sion 4.4 works on all Atari 8-bitcomputers with at least 16K memory,and with all Ato}ari 8-bit diskdrives.- - - - - - - - - - - - - - - - - - Ӡ* Copies disks up to fifty percent fastep}r than conventional copiers.* One-pass double-density full-disk copy on 256K upgraded XE/XL's.* One-pass single-densityq} or two-pass double-density full-disk copy on Atari 130XE.* Two-pass single-density or four-pass double-density fulr}l-disk copy on Atari 65XE or 800XL.* Automatic drive selection and density switching.* Copies disk formats, preservins}g high speed loading disks.* Disk directories from drive 1 or drive 2 with density information.- - - - - - - - - - - -t} - - - - - - Π Boot the CopyMate disk in thenormal way. Atari XE and XLcomputer owners need not holu}d downthe OPTION key when booting theCopyMate disk. Do not use programcartridges or Translator disks withCopyMate! Copv}yMate automatically determinesthe number of disk drives on thesystem at boot time. If only onedrive is present, the Sourw}ce andDestination drives are set to drive#1. If two or more drives arepresent, the Source will be set todrive #1 and thex} Destination todrive #2. Both may be changed toany drive number on the system byusing the "S" and "D" keys forSource andy} Destination drives,respectively. CopyMate will automatically switchto the correct density for the diskto be copied. Cz}opyMate has the capability toformat the destination disk ifrequired, and to write with orwithout verify. The "F" keytogg{}les the Format Destinationoption between ON and OFF. The "W"key toggles Write-With-Verifybetween ON and OFF. The "Scree|}n VTOC" shows the statusof every sector on the disk asfollows:SMALL DOT = Empty Sector (Sector contains no da}}ta)LARGE DOT = Data Sector (Sector contains data)QUESTION MARK = Bad Sector (Unable to read s~}ector) Pressing the OPTION key during aread operation skips reading therest of the Source disk and writesthe current da}ta buffer to theDestination disk. In copying anAtari-type DOS disk, you should notpress OPTION until the disk VTOCand di}sk directory (sectors $168thru $170) have been read. Disk directories of drives one ortwo may be obtained by pressing the}keys "1" or "2" respectively.NOTE: Only the first 44 file namesare shown, and CopyMate can copySpartaDOS disks, but can't} readSpartaDOS directories! CopyMate uses the expanded memoryof the 130XE and all "130XEcompatible" 256K upgrades (such }asRAMBO XL). If CopyMate doesn'twork with your upgrade, you shouldhold the "B" key down when bootingCopyMate to disable }this extramemory.- - - - - - - - - - - - - - - - - - ˠӠ CopyMate works best with USDoubler-equipped} Atari 1050 diskdrives. With these drives, Copy-Mate always performs High SpeedI/O (commonly called UltraSpeed).In addit}ion, they are the onlydrives capable of duplicatingspecial Source disk formats (egUltraSkew) on the Destination disk.High} speed I/O is also possible with most 1050 "HAPPY" disk drives,but special format copying is notpossible. If a HAPPY dri}ve and Doubler driveare used together, reading fromthe HAPPY drive is preferable. Ifa combination of high and normalspee}d drives are used, reading fromthe high speed drive is prefer-able. Even so, the write speed maybe very slow when copyin}g somedisks. If you only have one highspeed disk drive you will probablyfind it faster, especially with a130XE or 256K u}pgrade, to performone drive copies.- - - - - - - - - - - - - - - - - - ɭ٠ŠIF DISK CAN BE READ IN 1} PASS:1) Make the first copy in the normal way.2) When the "COPY COMPLETE" message appears, insert the next Desti}nation disk and press SELECT.3) Repeat step 2 for subsequent copies.IF DISK CAN'T BE READ IN 1 PASS:1) Set up for} a one drive copy. (Source drive = Destination drive)2) Insert Source disk and press START.3) Insert Destination d}isk and press START.4) When the "INSERT SOURCE DISK" prompt appears press SELECT.5) Insert the next Destination disk} and press START.6) Repeat steps 4 and 5 once for each additional copy.7) Repeat steps 2 thru 6 until all the copie}s have been completed.- - - - - - - - - - - - - - - - - - Ӡ IT IS HIGHLY RECOMMENDED TO LETCOPYMATE FO}RMAT THE DESTINATIONDISK! By doing so, you can besure that source and destinationdisks are EXACTLY identical. Write-Wit}h-Verify is not necessaryfor day-to-day copying. However,when backing up unreplaceablesoftware or data, write-with-verify}should be turned on. It will benoticed that the write speed ismuch slower when write-with-verifyis enabled. CopyMate i}s fully compatible withboth single and true double densitydisks. It is only partiallycompatible with enhanced density(DO}S 2.5) disks, being able to copythe first 720 sectors. CopyMate is in the public domainand may be freely copied as longa}s the original boot disk format isleft unchanged. For BBS distri-bution, CopyMate may be compressedinto a single file usi}ng a com-pression utility. CopyMate doesnot always work properly as abinary file, so it should not beconverted to such.}- - - - - - - - - - - - - - - - - - Ҡ The authors of CopyMate shall haveno liability or responsibilit}y tothe user, or any other person orentity with respect to anyliability, loss, or damage causeddirectly or indirectly by }CopyMate. If you like CopyMate, please letme know by writing to: Mike Palmer 10843 Venice Circle } Tampa, Florida 33635=================================== }??N2G=0N2B2ppppN2F?F??F?F?pF?N2A?4}=xԅ,DȄ 7 4 LJ4xԩԙЙө1123, }Ԣҩ@ 1ԢO?ԩ?ԩ! x: 7 4;O3=? 7˄JJef7H\7h< :(t} 5:ەpA? y7 y7 ? ? = O;܆L6 I0 =?0½=?}0Eܠ 4; 8 = ; ޅ60?:2344 t0ԅ2Յ3؅4$ t0? 0$P 0}ҥ 10`# 121 4 2 q1 <1L01 q1) "1L01 D12 <14 D11`0>$?06L)0L}b0P ߠ` "1 1< D1AC Eе0͍&0' `e1i1`) ҩߍҩ}ҭҍ )  `L0H)ҩh `ҍ ҩ(ҩҩ`H) L74HH Lw }1hhh@l&HIҩh@4h `ҍ ҩ(ҩҩ`H) L74HH Lw %5dxԩӹddө@X`olw @?*@*#C!|!|x!|jH!||$|4>yi|ry4;@t@@t*| }#Ix\̀{F"BdB/3   YKH@5*|#Bu*DJ8*4?Qa3 Uc@@"pB00ppPp @:3}ւǓ˝( BzoswvztsB}\|>}d_Os:{| ` }`2_/.( 4dr)&P.3ԩԠ>,#VQAD RQ*7 Bt>@$h% @ }p3@HL D SX}SAXAAAS RA "G*RWG։#C+Cꘇ(@!prqs#/s@@fH|H#@` 3 240}4  8@vv'x _'KY[[ܞF:ZXC)<HWЯ܎gJWmZy7fҦd88ɥєɽɅͯ2ڕB}/%xchangPKU1 GgKYKGhTLA wOux4Ϫ8#Y '#opy$ tH*~A|rA])aa& Lb9S999&Yze}?tCC> %CdImb+O+g+++5H+ɸ@#M)N\)فLd 8WZ f fW+7ԐG}$C4R u*p}B,EJ)#W)[]eb0BWҘ XSh¾Ce%儽I^A9p)!IoWQH"VVJVVZGBGZސ䃋}ދxB :P*WR DAO D ~ ? LC!7#`& 3̅(؄ JEP02U5`"D!mt_}-i_L <>(>! i\*SK"XR:Gh|@0}(!%>))),!H ڕR.g0v)0v4zͦ;<=!*Y}!1o$VR 0x RoC}i^30Ϗi_]bp*(G G !tGi7CC̀zi)+ * } +}*(&)z#{  {#|!hFJ>Rdh Rh0C@ @6U8``a$e($%e)%$f0Ij}(I$ڝRQZVC FlFrRь}4 Cɀgg$h0@DHL 0*!لMTEIlpR12(Ta RiB#v[AH~}HTH3NoC!FF!!F$EH!QXXXXXXXXY@!Y@ĬqRHRXՏN}@#C؂fhChDCK((PzQ؆/0xh|0F78+PWqB$͆A+G2A>h2K`| FjFDh{&Bԟ‘ 6(H}&+ɋɊ !!8`>-![h*S  3J  BӠ*R(Ӱ*R*R!$Ƃi ^WQo4phI)(m3JH=2 }RHS*RXS:RSBB11*/8d #@ [4JB4;Hb+CG47K#.ȁ;2@)uE!"Ϡ 4C*`x' c@@"d V} p]1ȧ@*¸`hd R1_Bq-I! SS! a@DSLSND"#W F 0 2= Ud5;ũ}kCB H<+Ct<  H>Ar4%0[Eh~f0X0X2!2o~ԄF4T4U4 63'` PH5?}f@6R`RbR@P"8Q!Q/Qu(14B;!\@ t% B0[B0+S##C"!}6·PP\\X܀Y\%ܘXYEÄÄFFC@# @ Kˋˀ ˉC@$9xx{=:8{=;&@(Jܜc'WpFP}&vp B`426statusof PAG#y}:{ P33066W'f6P7GWGFv'@vFG1B.CLN`@.N}@t 2algYsK13@ ZZ[&h bMՍDBm- M 49k DFLj M }777=6`td//xL" ( g c z  g}*+((  z6 66`(`**+` ^,Ƃ `Ɓ Ƅ ƃL })0  ^ x  ^ xЎЪ 槤 ` ƞƝ` ^ ^`Щ}  ƈn`  ө"/X@L ƦL ` ` Щq`TR=M ȑ ```` B VjBD`E JK VЅҭѩhӢБh}XХYѢ@ҩXЩҭ )eYъipӬ ұґТ ҝj ԍ ԍ ԭJJJJ ҭ``}EՠL`եɛ`E:posH?H}???H???H?H??????????????????????????????????}?????????H????????????????????????????????????H?????}??????????????????????NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN}???????????????????????????????H?HҀ????H?H???H?H????H?}?H????H?H??H???H???H?H???HH???H???H???H??HH???H}"!3)#}7-7.7.8.8.8.>.>.>.8.M->-7.8.]>.} !i"@88`8L8R˭̠ˈiͥiΠ͈8ȥ͍ͥ!΍"ii }B VB JD8E V`E:~W#[WUS)}  HH`i@ `8 ^Uc^_}^]I^``Р`800L0j ө `0`0%@- ( (j F' D' ( (م٦}0.0E; (+-< (5 e e (% 0`.+- i08e}L%hJJJJL&d1[8J ( iԔIL& ) GN Q' 8~  )ȩE n%+8- n%dȢ/8 }i-`CPYRT.1984,MARSLETT٠*`eׅץeօ&&BL&Ԫ &&&Ր })Ԙ})}PȄ``զԆՠքׄʈ0Ր)Cl>f8 i9`8ԕIؠ7`ە1Ii}E0yʈ0niհdڥEԠ``&``I))8iE040 uʈi}ԐԕեE*`80 ʈL&ʢ`<68?e (ԕڕڅ (cԊEEhh}*08``LC'L C* *8i@ (ԕբ (8L)م؅٥ׅإօץՅքզJJJJ f)) f)ȥ}ЄL;',lL* `80 ` (>.+- .,0"8` (Ȅ`Ԡ66666`:`L&0ȵ}ߵ޵ݵܵ۰٘ eeߵe޵eݵeܵiۈٔۨ0L(uu٥uإuץu֥u}Ո` 'Oc?'N?Jf s%JJJJ l%) l%0 s%0̀  .} 0.`ʈ`` x*` x* b*` "* ' b* f'`i`ԝ}````ԕ`, * ' *F &8ԅLC'i8ȅ &ԩ}f f')?% ( f `' * * '+ @* * ' * -* ;* * `' * * (( ( f' * f' d,F , * '}e?`CB  * |* f' * -* `'L%( @p8e@i 1&@4@ g@Y!3'@"wfP } (? ( 'բ +} * * ',r 8* * -* ( "* ' b* f' * ' |*ե8 &f ( ' * -* f' f'$ b*L'wf?PE@}i@g5`@04VD?8@0% ?CBH@>DIh8E?hyx? )D?@ (1V?wD3331??xS4}H) ٪Lإ`ъъ``Û7-`6-EخȊ} z zȩȩ E [ bМ Q'] 򅟅 ( Ģ (򄨱}ɛ$0L Ģ ( T Ģ ( 5ɛȑ @膔7 Ģɛ ĢɛК } ܩ8IȢ z Щ $P) 8孨客 $ L` L`L^ ܩ Щ L` %}0 A0Ԅ ĢLĢ 0$ LYU LY8eHeHL H H hhHH`}hhLۡLѽʆLۡ 0 ҰşLۡ` }`@  LhhHHL `LLL (ųޢ T#iŰ DD Ģ}`8` ( 裰% ᢥ0 裐 ($$ 8`$ (ȩ@҅ҥ򄬥 T M L~8} zӤ򈦬ʽʈ򈱗  z池$PƬ0 LĢL,A[`8` ( %` ĢȢ}` ("̩ Ģ Ģɛ " ĢL3嫤`毦򤪱%).Q h(ei}8`Ū߱08§REŧDATINPUԷCOLO,LISENTEҺLEԎI̦FONEXԷGOTϷGO TϷGOSU·TRAиBYŸCONYCOCLOS}CLҸDEYDI͸ENĸNEOPELOASAV:STATUCNOTCPOINXI\OVPOKPRINԸRAREARESTORŸRETUR RUθSTO}POGEԴPUԷGRAPHICVPLOVPOSITIOθDOVDRAWTTSETCOLOܦLOCATRSOUNLPRINԸCSAVŸCLOAĺ*ERROR- STOPPED}+,%5&6(xĜ#%&$' !"*) +8,<Dȧ?+:ԧ,+:,+:,}Ч#+7,</01 2!3"4E"-".|"-ɻ}#ޅEE| +9S},#+;,Û΢|ijڢڢ@ACB=><GOTGOSUTSTETHE}<<>ުNOOANĨ<<>STRCHRUSASVALEADATCOPEESIRNFREXLOCLOSQSGABINPADDLSTICPTRIS}TRI8ee L08ueeeee褢 ƚƜ}`8IȄ墅8夕奕墅褢`朱`  6ğ}ȱȄ ~La HH`0 Щ LLL] -ꅋš Š` ܩ ЩLei``` ELq} El `=Īٷw|ԶԶѷש巴!e l. gɨ aL6 Eƨ %󅕥 gL a}" a Ư" L8 > c=Š) 죰 L樤ħ`hh` >L ڪ H # q Ԡ D'}թ@  Ԡ hH qhĥȑĥȑĦʊȑ` ͫՅԅ hhL^ ` 𵤨 >>< H } & h  ` 0` q ˽L½    0 `LP  Lն` LP y!} gLh 0L[  0 ܩ Щ 0L ׫ԅՅ` ૥# ԅ ͫƳ ( >`(L"} Ȅ` z > ąŅ`őŐ  H h` zLzĦ``Ƶ#}`Ƣ౐``䉐䈐`)iiТLE`$}湩 0éL y7 oԩ 0 gՈ y%} [L` & %󅕥Lg AT LINE ૥H ׫ H ׫heԨh` . ૥ Hҩ ׫hHԝ ׫ H ׫hheԝ&}` ׫ԅUՅV ૥ԅT` ׫ԅ` ȍ JK )L ׫i)I ػLS: ȢL8)@e'}`H J*K+h LGHFH`L ׺L` ׺`H +h `@H ׺(}hH    ?}i}(i L fh`LP   ׺ 8倝)}偝   󥃅  LHΆ󢻆h ػ `C: КH hKJ LQ' L H*} hHH ڪ } hKhJ  Q'L )L + L1& $LM 3 NL1 ͫ ԝL՝M ͫ ԝN%б +} ׫ԦL Q'   L1   N Fɀ 7LɈ [L4] LS,} + C` ͫ`IHEDBLVHH hh &L  `` +- `Y-}DAER ԅՅ֦󅗄`` > ˽ $ "   -򤲈ȱ`  .} L &L8`$)ԩe * ((`)8@0+̪Յ)e)e * `'F *Ϡ * `/}' * * ' @* * 'F I`U9>`D'RFuCU?b9dYdg@W2@?tS)%@)@0)0}%ԅԢ, + * * '9 , @*. * '", * f'ԅԥ ɠ * ((`8`0?i ((1} * * * `' * ' * * * (( * `'l, * ' * f'Ƣ *#8@ji@)j2} '`P P LP* (( * `'l, * ' * f'Ƣ *#8@ji@)j0 CTH_FastBasic 2.0 (C) 1991 By Tom Hunt FastBasic will become a welcome addition to4} the library of BASIC programmers who use Sparta Dos 3.2d. FastBasic, henceforth referred to as FB, is an extremely fas5}t BASIC interpreter. Nothing more, nothing less. It runs on XL/E machines. It provides 28,119 bytes of free memory for your b6}asic programs. This should remain constant regardless of how many handlers that you load into lower memory, before loading FB7}. Some of FB loads into $2500 and moves MEMLO up to cover itself. So there is plenty of space to load any special handlers yo8}u might want. NOTE: FB does not like the older RD.COM file from ICD. I suggest you use the PSI ramdisk handler. One of 9}the features of FB is a screen accelerator. The custom screen accelerator may not work correctly with some BASIC programs. In:} cases such as these, hold down the OPTION key when loading FB to deactivate the screen accelerator. Another feature of;} FB is a customized Fast Floating Point package, based upon source code by Charles Marslett. (Thanks Charles, for sharing thi<}s!). The FFP is more than sufficient for most programs. But there are a few programs that require a high degree of accuracy o=}n trigonomic functions in which a certain degree of inaccuracy will be noted. Fortunately, you probably won't run across thes>}e types of programs very often. You may re-enter FB from the 3.2d command line by typing RUN. Your basic program should?} remain intact, unless you used some function of 3.2d that clobbers the basic program area. The COPY command is an example of@} such a command. You may use DIR, TIME, DATE, etc. Included in this ARC is a simple benchmark program. It will test varA}ious functions of both Atari Basic and FB, and print the results. The following is an evaluation of FB written by John B}McGowen. It may help explain any other questions you may have about FB.Dear Tom:RE: CTH Fast BASIC (vers 2)I found an oC}riginal copy of my programme which gives the position of the moon (azimuth, altitude) for every half hour in a month. This orD}iginal is not so accurate as my latest version, but runs under Atari basic. Running it under Atari Basic, TurboBasicXL, CTH aE}nd the BasicXL runtime system from the last Antic disk gives the following times: H:M:S F} -- -- -- + Atari Basic 00:55:23 CTH Fast Basic 2 00:25:50 TurboBasicXL 00:1G}4:57 *+ BasicXL Runtime 00:53:19-----------------*: BasicXL... (this was run using the AUTORUN.SYS from the last AH}ntic disk... the BasicXL runtime system, with the moon positioning programme as Autorun.BXL) As you can see, without the FASTI} command from BasicXL it does not provide much speed improvement over Atari Basic... I don't know whether this is due to the J}trig functions, the looping or the GOSUB/GOTOs... but, in any case, CTHFB is better than the BasicXL runtime system for my moK}on positioning programme.--------------------+: (The values for Atari basic and the BasicXL runtime system are approximatL}ions...I ran the calculations for the half hours in one day and scaled up to a month... otherwise it just takes too damn longM}!).-----------------------I have a Wheel of Fortune game (would never RUN it under Turbo or CTHFB, as it uses FOR/NEXT loN}ops for timing) but it loads/runs under Atari/Turbo but CTH gives an error-147 when it runs (insufficient RAM for the graphicO} screen).I suspect the memory limitation may also affect some Basic slide show programmes that load two screens and use pagP}e flipping... two screens take up almost 16K.-----------------------I noticed when running my moon programme that while AQ}tari and TurboBasic printed one thing, CTH did something else. My print (to screen) routine printed the days as the calculatiR}ons were done with a PRINT X, command. Both Atari and Turbo printed something like: 1 2 3 4 S}5 6 7 ...etc.While CTH gave:1 2 3 45 6 7 ...etc.Is thatT} due to the 40 column screen (rather than 38) or does CTH handle the tabs differently (are they, say, absolute positions on tU}he line instead of relative to the last print?)?-------------------As to memory, you are right, it would be terrible to hV}ave CTH handle tokenized BASIC in banks (as strings and arrays are not in the VVT, but in basic space, what to do if one partW} of the code refers to data, strings say, in another bank? Also, each GOTO/GOSUB would have to do a bank switch and then JSR.X}.. to get the right banks it would have to be precompiled since a GOTO 100 statement does not know which bank contains line 1Y}00... but your version must handle this to get the absolute addresses anyway... it may be possible, but very messy).As to hZ}aving the basic interpreter itself in banks, that is what Turbo does (though its bank is RAM under OS rather than XE type ban[}ked RAM) and Turbo runs faster than CTH... I am wondering, is it possible to redo Turbo to use banked ram rather than ram und\}er OS and so make it Sparta 3.2d compatible? The addresses for JMP/JSRs would change and the bits poked into PORTB... of cour]}se this would require configuring the RAMDISK or whatever, NOT to use this bank (but this can be done with the PSI ramdisk ha^}ndler, or even the ICD handler, and can be done with MyDos, though I think there is a bug in MyDos if you try to enter a page_} sequence with over 256K upgrades and don't use the defaults).---------------As you can see, at least for the moon progra`}mme (which was GOSUB/GOTO/LOOP and TRIG intensive), CTHFB is about the average (geometric mean) of Atari/Turbo BASICs..I doa}n't know of any source for the source code to TurboBasicXL... but if THAT were available, converting it to banked ram, ratherb} than RAM under OS, would seem better...---------------Being without a HD, I will probably keep using TurboBasicXL (for sc}peed and greater memory) with MyDos and only use Sparta with CTHFB when I have something that needs Sparta and basic (I have d}a few such... my converter for PS icons to D3 format is in basic and on a disk with Sparta, but it only takes 15 seconds to me}ake the conversion under Atari basic, due to some ML code and putting the main subroutine at the front of the code).-------f}----------... I have not been able to get back to CTHFB with a RUN from Sparta3.2d on my system (minor problem).. but as ang} alternate basic it is much faster than Atari basic (about twice as fast for my moon positioning programme) though not so fash}t as TurboBasicXL. Trying to use RUN from Sparta sometimes causes the basic to lock up (after using the RUN attempt, then runi}ning it from ramdisk, once attempting to edit a line from a programme I then loaded, a delete of a character caused a lockup;j} once attempting to ENTER a listed programme caused a lockup... I tried again without attempting the RUN command and had no tk}rouble with the delete or ENTER)... It doesn't seem to like ICD's original RD.COM file (but that won't even work with MAC/65!l}) so version 2.3 is necessary (or the PSI Ramdisk handler). (NOTE: The above problems should disappear if you use the PSI ramm}disk handler. -Tom).In short, except for returning with a RUN and the loss of memory, CTHFB version 2 is MUCH faster than An}tari Basic (and the BasicXL runtime system.. at least without the FAST command.. however I believe that using no FAST commando} is supposed to slow BasicXL down to approximately atari speeds for timing with FOR/NEXT loops)... quite worthwhile if one cap}nnot use TurboBasicXL.IF TurboBasicXL could be reconfigured to work with Sparta3.2d, it would be better, but for Sparta3.2dq} users, this version is great... I like it, but with my system, would seldom use it (but for disks with basic programmes and r}sparta... probably will).---------------I guess that's all I have to say on CTHFB version 2... very nice Sparta compatibls}e basic... quite fast... Nice job...---------------Till later. Sincerely, Johnt}--------------------------------------For help/support for any productof CTH Enterprises, call- CTH BBS u} 419-368-4413 Conference #0 24 Hrs 7 Days 3/12/2400 baudrises, call- CTH BBS V)̩ˬ̦L`  6ccc9=ccccccccccccG G 4w}-&---ssssss2#x}#-4:ì:?\:곬gy}::꯬:::ά뫬0άӝ:ߝ::0z}#::::::/K:Ws:ά:ꪰ::ë:{};Þ?ӞӞ;۞۞0 <++ P 015ߍi |}`P\`\^\^ʜT??c1a?Pbta˄ͩ\̱eͅ\pa kaHo$L:cQZn}}.=b.pS.ZnZnӥ0AgHV:# ZnZnZnnӁ0H8/Kguk޿ZccqZqIiӥ_ZоFrZoZ#n~}[ oZnӥZk.h(nZZnI Ox=L\ UO`!:'`ʧ&`ad*K JLVS:E:I©Ӏ}ӃJf{u_ tDzw_hӉӃӃhД􇵆yvGzMCSSKܝSmߝ}܁i҂ӜBӗݚ1Cea ؛> z kaseta.7szkCX  ى wym. W݈}흀h 4:8 6 4cAӿ|ӠޣhhLS퀈!WPPSSSӧ֧g#}#-^'_^'_:˩\̱Y ̥_`L_iL}\0_0_Q_h_h`ho Y nRSLo|[cP&  5d00a m JI(b8;Zb8;Zb8 ӷ濒/Z~Z3~'_ kd}~^뚭v:QSy!tLQxM~Zn3vzdsS^v#ӮNc(QR^ Ɩ#S$?S}w9w.|hΈnd8ТB1~q>c*`Xc Cճ e e_F3fex=MH#6~H  V?Ӯ^Ӯ}EŐU8u9ӮU9U9ZӮ~ŁOSśCV?ӻui.ڑӮZֲWӮFZϫݕ_ӯ9 ~V?~-63:}#3>E!:LB ]e ]f }jƳc:C>c|3Tms Lb2;*3:#9V9:#؈ۗ Ơ>v#O>`@'YKqV<~}R InӮ[4^7 [v#^ Ɩu%QZnӥ_}ӥ[j^fEj ԭ  f ֩ gXCCY cCe)Ct/b#L`f^ $^v8^v1Y+}s~V#~q#*V?>#Z~'Z ~ B8js%\8Dh Dl ~ZnuXJE;eV6psnӥ1$Y$ov8:@?W>ˬ"Zv?}>&6??N&Z+vc>ӧT'Ӡ˙|SOxXʣ7 sh`'P`HI V vrPň͓nknZn{}oiZnZnZTuᩛZnZsnnZnZn~kjpLW~᪈8SJI\fkvSFQ֏VN [oTӉӷ 6}N7~#Zv &׿TZnCVbCR zd eSLɡlb s3;bheOWoecte5 H :_%\ahP^:#}+#._Js"W<3##W#3#Sw#d?#S3SK&=Bf=v#Z`~ߔ8uhpzuS'O: S#bF b _2>'}_;r3Z~ȕ^cZ~Ө=eaegvke5e6q_yXOYtW%Ye0e8کۖv dM :S}Zj󭓄\p6Wp-J:w:,q!i:;#J:w:V:Wv;#_HT6ںoS@ܿ/,ZvCA,B[,l:{5:&}~++*#Z~*{# 6cS񓉒?J3*H):w{b=cccc@`cX~6 4 }Z~kjj;z&-51OېӺӠ$h Ű흀Ə6_WSSS$ӆ_ߖ>a}ӑ>휅ܙiixӝ]ژ`a(*gtory).Pl[nbwCUTC  bCK*-Directory,#-ReGgℂ<}3퀐Ӄ_uwm PzX퉀ӃŽӑh ^:?Zv8{M#.=.|.6,M8?޶qn qpN0P0,1}91N1 96Z.W.4{42Y>NOttuܥK!q_6,M8?޶qn qpN0P0,1ZZageszczacz-----------When loaded this program will display ascreen of Polish and most other promptswill be in Polish al}so. Do not worry asthis is what this doc is for!This program is a binary filecompressor. It compresses binary filesby re}moving all zeros and thus filesCAN be quite a lot shorter.This one is different to other similarbinary compressors because} it clearsthe memory before loading into it!So, say your binary files loads into$A000-$A85F. This program will read thest}art bytes and write a little introto clear between these addresses andthen the rest of the file is loaded(with all the zer}os removed ofcourse!).This offers a significant advantageover other similar packers because ifyou have packed any files l}ike thisthen chances are the font, screens andother things are corrupted by datastill in memory and not beingoverwritten.}Back to using the program!After the program has loaded you willbe given some sort of information aboutthe program and its} creator. Some timelater you will be prompted to pressSTART. Do so and you will be sent tothe 'file input' screen. Enter t}hefilename of the binary file you wish topack (using D:FILENAME.EXT) or use '*'for a directory of the disk in drive 1.Aft}er it has loaded you will be askedfor the destination filename or you cancan restart by entering '#'.After you have typed }in the destinationfilename (again in the D:FILENAME.EXTformat) the file will be saved to disk.g '#'.After you have typed a